home *** CD-ROM | disk | FTP | other *** search
/ Mac Format 1994 October / Macformat17.cdr / Shareware City / Developers / shutdown-fx-201-c / sfx ƒ / sfx control app ƒ / Shell ƒ / timing.c < prev    next >
Text File  |  1994-07-11  |  2KB  |  57 lines

  1. /**********************************************************************\
  2.  
  3. File:        timing.c
  4.  
  5. Purpose:    This module handles timing loops, based on the TickCount,
  6.             so that time-sensitive procedures operate at the same
  7.             speed on all Macintoshes.
  8.  
  9. This program is free software; you can redistribute it and/or modify
  10. it under the terms of the GNU General Public License as published by
  11. the Free Software Foundation; either version 2 of the License, or
  12. (at your option) any later version.
  13.  
  14. This program is distributed in the hope that it will be useful,
  15. but WITHOUT ANY WARRANTY; without even the implied warranty of
  16. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  17. GNU General Public License for more details.
  18.  
  19. You should have received a copy of the GNU General Public License
  20. along with this program in a file named "GNU General Public License".
  21. If not, write to the Free Software Foundation, 675 Mass Ave,
  22. Cambridge, MA 02139, USA.
  23.  
  24. \**********************************************************************/
  25.  
  26. #include "timing.h"
  27.  
  28. static    long        oldTicks;
  29.  
  30. pascal void StartTiming(void)
  31. {
  32.     oldTicks=TickCount();
  33. }
  34.  
  35. pascal void TimeCorrection(short tickCount)
  36. {
  37.     long        newTicks;
  38.     
  39.     newTicks=TickCount();
  40.     while (newTicks-oldTicks<tickCount)
  41.         Delay(1L, &newTicks);
  42. }
  43.  
  44. pascal void ScrollTheRect(Rect *r, short dh, short dv, RgnHandle unused)
  45. {
  46.     Rect            theDestRect;
  47.     GrafPtr            thePort;
  48.     RgnHandle        temprgn;
  49.     
  50.     SetRect(&theDestRect, (*r).left+dh, (*r).top+dv, (*r).right+dh, (*r).bottom+dv);
  51.     temprgn=NewRgn();
  52.     RectRgn(temprgn, r);
  53.     GetPort(&thePort);
  54.     CopyBits(&(thePort->portBits), &(thePort->portBits), r, &theDestRect, 0, temprgn);
  55.     DisposeRgn(temprgn);
  56. }
  57.